<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>滚动后停止执行</title>
</head>
<style>
    * {
        margin: 0;
        padding: 0;
    }
    
    .box {
        height: 3000px;
        margin: 0 20px;
        background-color: green;
    }
</style>

<body>
    <div class="box"></div>
    <script>
        // window.addEventListener('scroll', function(e) {
        //     // console.log(e);
        //     // 得到滚动的偏移量 触发太多次
        //     // 如何在最后一次触发？
        //     // 不是监听事件，当事件停止后，执行回调函数
        // }, false);
        const onScrollStop = callback => {
            let isScrolling; // 闭包空间中 存放定时器的ID 不会销毁
            window.addEventListener(
                'scroll',
                e => {
                    clearTimeout(isScrolling); //取消上一次setTimeout的操作，必须放在setTimeout之前，放在之后则所有的setTimeout都被取消了
                    // 频繁滚动时不执行，停止后再执行
                    isScrolling = setTimeout(() => {
                        callback();
                    }, 150)
                }
            )
        }
        onScrollStop(() => {
            console.log("the user has stopped scrolling");
        })
    </script>
</body>

</html>